package iso3.pt.model;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Asignatura {
	private Integer id = -1;
	private int codigo;
	private String nombre;
	private float creditos;
	
	private Profesor profesor;
	private Set<Unidad> unidades;
	private Set<Alumno> alumnos;
	
	
	public Asignatura() {
	}
	
	public Asignatura(int codigo, String nombre, float creditos) {
		this.codigo = codigo;
		this.nombre = nombre;
		this.creditos = creditos;
		this.unidades = new HashSet<Unidad>();
		this.alumnos = new HashSet<Alumno>();
	}
	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setProfesor(Profesor profesor) {
		this.profesor = profesor;
	}
	
	public void addUnidad(Unidad unidad) {
		this.unidades.add(unidad);
	}
	
	public void addAlumno(Alumno alumno) {
		this.alumnos.add(alumno);
	}

	public void removeProfesor() {
		this.profesor = null;
	}
	
	public void removeAlumno(Alumno a) {
		alumnos.remove(a);
	}
	
	public void removeUnidad(Unidad u) {
		unidades.remove(u);
	}
	
	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public float getCreditos() {
		return creditos;
	}

	public void setCreditos(float creditos) {
		this.creditos = creditos;
	}

	public Set<Unidad> getUnidades() {
		return unidades;
	}

	public void setUnidades(Set<Unidad> unidades) {
		this.unidades = unidades;
	}

	public Set<Alumno> getAlumnos() {
		return alumnos;
	}

	public void setAlumnos(Set<Alumno> alumnos) {
		this.alumnos = alumnos;
	}

	public Profesor getProfesor() {
		return profesor;
	}
	
	@Override
	public boolean equals(Object o) {
		boolean equals = false;
		if(o != null && o instanceof Asignatura) {
			Asignatura a = (Asignatura)o;
			equals = this.id.equals(a.getId());
		}
		return equals;
	}
	
	public boolean estaMatriculado(Alumno alumno) {
		for (Alumno alu : alumnos){
			if((int)alu.getId() == (int)alumno.getId()){
				return true;
			}
		}
		return false;
	}

	@Override
	public String toString() {
		return "Asignatura [id=" + id + ", codigo=" + codigo + ", nombre="
				+ nombre + ", creditos=" + creditos + ", profesor=" + profesor
				+ ", unidades=" + unidades + ", alumnos=" + alumnos + "]";
	}	
}
